#include<bits/stdc++.h>
#define int long long
using namespace std;
namespace IO
{
	template<typename T>
	void read(T &_x){_x=0;int _f=1;char ch=getchar();while(!isdigit(ch)) _f=(ch=='-'?-1:_f),ch=getchar();while(isdigit(ch)) _x=_x*10+(ch^48),ch=getchar();_x*=_f;}
	template<typename T,typename... Args>
	void read(T &_x,Args&...others){Read(_x);Read(others...);}
	const int BUF=20000000;char buf[BUF],to,stk[32];int plen;
	#define pc(x) buf[plen++]=x
	#define flush(); fwrite(buf,1,plen,stdout),plen=0;
	template<typename T>inline void print(T x){if(!x){pc(48);return;}if(x<0) x=-x,pc('-');for(;x;x/=10) stk[++to]=48+x%10;while(to) pc(stk[to--]);}
}
using namespace IO;
const int N = 2e5+10,mod = 998244353;
int n,k,x[N],y[N],v[N],v1[N],fac[N],cnt1,ans[N],id[N],head[N],cnt,mi,mx,cnt2;
struct w
{
	int to,nxt,id;
}a[N<<1];
inline int ksm(int x,int y)
{
	int ans = 1;
	while(y)
	{
		if(y%2==1) ans = ans*x%mod;
		x = x*x%mod;
		y /= 2;
	}
	return ans;
}
inline C(int x,int y){return fac[x]*ksm(fac[y],mod-2)%mod*ksm(fac[x-y],mod-2)%mod;}
inline void add(int x,int y,int id)
{
	a[++cnt].nxt = head[x];
	a[cnt].to = y,a[cnt].id = id;
	head[x] = cnt;
}
void dfs1(int x,int y)
{
	v1[x] = 1; cnt2++; mi = min(mi,x),mx = max(mx,x);
	for(int i = head[x];i;i = a[i].nxt)
		if(a[i].to != y && !v[a[i].id]) 
			dfs1(a[i].to,x);
}
void dfs2(int x,int y)
{
	v[x] = 0;
	for(int i = head[x];i;i = a[i].nxt)
		if(a[i].to != y && v[a[i].to]) 
			dfs2(a[i].to,x);
}
void dfs(int x)
{
	if(x >= n)
	{
		for(int i = 1;i <= n;i++) v1[i] = 0;
		cnt1 = cnt2 = 0;
		for(int i = 1;i <= n;i++) 
			if(!v1[i]) 
			{
				mi = 1e9,cnt2 = mx = 0,dfs1(i,0);
				if(mx-mi+1 == cnt2) cnt1++;
				else return;
			}
		ans[cnt1]++;
		return;
	}
	v[x] = 0,dfs(x+1);
	v[x] = 1,dfs(x+1);
}
signed main()
{
	freopen("soft.in","r",stdin);
	freopen("soft.out","w",stdout);
	read(n),read(k); fac[0] = 1;
	for(int i = 1;i < n;i++) fac[i] = fac[i-1]*i%mod;
	for(int i = 1;i < n;i++) read(x[i]),read(y[i]),add(x[i],y[i],i),add(y[i],x[i],i);
	if(n <= 0 && k <= 0)
	{
		dfs(1);
		for(int i = 1;i <= k;i++) print(ans[i]),pc('\n');
		flush();
		return 0;
	}
	else 
	{
		for(int i = 1;i <= k;i++) print(C(n-1,i-1)),pc('\n');
		flush();
		return 0; 
	}
	return 0;
}



